package MyFramePro.Utils;

import org.springframework.beans.BeanUtils;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 这里是 Bean 拷贝的工具类
 */
public class BeanCopyUtils {

    /**
     * 这里封装了 创建空参构造 与 返回对应的目标拷贝类的对象
     */
    public static <T> T myCopyBean(Object course,Class<T> clazz){

        T res=null;
        try {
            res = clazz.newInstance();   //这里利用反射，进行创建拷贝目标的无参构造
            BeanUtils.copyProperties(course,res);
        } catch (InstantiationException | IllegalAccessException e) {
            throw new RuntimeException(e);
        }
        return res;
    }


    /**
     * 这里封装集合，以用来保存 VO 对象的信息
     */
    public static <V,T> List<T> myCopyBeanList(List<V> list,Class<T> clazz){

        return list.stream()
                .map(course->myCopyBean(course,clazz))    //这里使用 stream 流的方式进行遍历拷贝
                .collect(Collectors.toList());
    }

}
